#pragma once

#include "BFSSolver.h"
#include "DFSSolver.h"
#include "IDFSSolver.h"
#include <queue>

class BestSolver : public Solver
{
private:
	Solver * solver;
	std::string option;
public:
	BestSolver(Node *node=NULL);
	void solve(std::string order, std::string id_heuristic = "");
	void heurysticOrder(Node* node, std::string id_heuristic);
	void firstPush();
	void getNode();
	bool checkVisited();
	void createChildren(std::string *order);
	void pushChildren();
	int h1(Node *node); 
	int h2(Node* node);
	~BestSolver();
};

